<?php
namespace Core;
class Error{
    #是否开启debug
    protected $debug;
    public function __construct($debug=true)
    {
        $this->debug = $debug;
    }
    #对外公开的方法
    public function error(){
        #隐藏所有的错误
        error_reporting(0);
        set_error_handler([$this,'handle'],E_ALL|E_STRICT);
    }
    /**
     * 这个被错误函数调用的方法必须是公开的
     *$code 错误码  $error 错误信息   $file  错误文件  $line 错误行号
     */
    public function handle($code,$error,$file,$line){
        $msg = $error."($code)".$file."($line)";
        switch ($code){
            case E_NOTICE:
                if($this->debug){
                    include "views/notice.php";
                }
                break;
            default:
                if($this->debug){
                    include 'views/error.php';
                }else{
                    #使用日志保存错误
                    $file = 'logs/'.date('Y_m_d').'.log';
                    error_log(date(['c']).$msg.PHP_EOL,3,$file);
                }
                die;
        }
    }
}
